/**
 * 定义一个可重置的一次性函数
 * @param {func} fn 要作用的函数
 * @returns {object} {runOnce:func, reset:func }
 */
function resetableOnce(fn) {
  // TODO: 待补充代码
  let flag = true;
  let result;
  function runOnce() {
    if (flag) {
      flag = false;
      result = fn(...arguments);
      return result;
    } else return result;
  }
  function reset() {
    flag = true;
  }
  // TODO: END
  return { runOnce, reset };
}

// 以下代码为检测需要，请勿删除

try {
  module.exports = resetableOnce;
} catch (e) {}
